﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Entidades;
using LogicaNegocio;
using AccesoBD;
using Reportes;
namespace PresentacionEscritorio
{
    public partial class frmCobroAtencionMedica2 : Form
    {
        private frmGestionTurnos2 formGestionTurno;
        private frmRegistrarLlegadaTurno formRegLlegadaTurno;

        private Recibo reciboNuevo;

        //datos que necesito para el cobro
        public long idTurno { get; set; }
        public Turno miTurno { get; set; }
        public long nroHCpaciente { get; set; }

        //objeto cobro a guardar en la bd
        private bool tieneConsultaAcobrar;
        List<DetalleRecibo> listaDetalles;
        private List<ObraSocialXPaciente> osPacientes;
        private Afiliacion planAfPaciente;
        private ObraSocial osPacienteSeleccionada;
        //Datos del ListadoOlL
        public long idListadoOLL { get; set; }
               //variables del recibo
        private float subtotal;
        private float descuento;
        private float recargo;
        private float total;
        private string totalEnLetras;
        private PrecioACobrar precioRecibo;
        ItemListadoOrdenLlegada iTemListado;
        Especialidad oE;
        enum PrecioACobrar
        {
            particular,
            obraSocial,
            afiliado
        }

        public frmCobroAtencionMedica2()
        {
            InitializeComponent();
        }
        public void SetFormGestionTurno(frmGestionTurnos2 frmGT)
        {
            formGestionTurno = frmGT;
        }

        private void frmCobroAtencionMedica2_Load(object sender, EventArgs e)
        {
            listaDetalles = new List<DetalleRecibo>();

            timer2.Start();
            btnImprimir.Visible = false;

            //deshabilitamos los campos para que no sean modificables
            txtFechaHoraActual.ReadOnly = true;
            txtNroHC.Enabled = false;
            txtApellidoNombre.Enabled = false;
            txtDocumento.Enabled = false;

            lblNroAfiliado.Visible = false;
            lblOS.Visible = false;
            lblNroAfiliadoOS.Visible = false;
            lblTipoPlan.Visible = false;
            txtPlanAfiliacion.Visible = false;
            txtNroAfiliado.Visible = false;
            cmbOSpaciente.Visible = false;
            txtNroAfiliadoOS.Visible = false;

            //deshabilitar por defecto los descuentos y los recargos
            txtRecargo.Enabled = false;
            txtDescuento.Enabled = false;
            //OBtenemos el idITEM.
            
            iTemListado = ListadosOrdenLlegada.obtenerListadoPorItem(this.idListadoOLL);

          
            
            oE = Especialidades.ObtenerEspecialidad(iTemListado.IdEspecialidad);
            cargarPaciente();
            cargarComboEspecialidades();
            cargarComboPracticas();
        }
        private void cargarComboEspecialidades()
        {
            cmbEspecialidades.DataSource = GestorEspecialidades.obtenerTodasEspecialidades();
            cmbEspecialidades.DisplayMember = "Nombre";
            cmbEspecialidades.ValueMember = "CodEspecialidad";
            cmbEspecialidades.SelectedIndex = -1;

            cmbEspecialidades.Enabled = false;
        }
        private void cargarComboPracticas()
        {
            cmbPracticas.DataSource = GestorPracticas.obtenerTodasPracticas();
            cmbPracticas.DisplayMember = "nombre";
            cmbPracticas.ValueMember = "codigo";
            cmbPracticas.SelectedIndex = -1;

            cmbPracticas.Enabled = false;
        }
        private void cargarPaciente()
        {
            
           

            //cargamos los otros datos
            Pacientess gestorPacientes = new Pacientess();
            Paciente pac = gestorPacientes.buscarPaciente(iTemListado.nroHCpaciente);
            
            txtDocumento.Text = "DNI " + pac.NroDocumento;
            txtApellidoNombre.Text = pac.Nombre + ", " + pac.Apellido;
            cargarComboTipoPaciente();
        }
        private void cargarComboTipoPaciente()
        {
            cmbTipoPaciente.DataSource = GestorCobrosAtencionMedica.obtenerTodosTiposPaciente(miTurno.NroHCPaciente);
            cmbTipoPaciente.DisplayMember = "Nombre";
            cmbTipoPaciente.ValueMember = "IdTipoPaciente";
            cmbTipoPaciente.SelectedIndex = -1;
        }
        private void validarEstadoOrden()
        {
            if (iTemListado.idEstado == 2 || iTemListado.idEstado == 3)
            {
                tieneConsultaAcobrar = true;
                cargarConsulta();
            }
            else
                tieneConsultaAcobrar = false;
        }
        private void cargarConsulta()
        {
            //tieneConsultaAcobrar = true;

            int i = grdDetalleCobro.Rows.Add();
            grdDetalleCobro.Rows[i].Cells["Concepto"].Value = "Consulta médica " + oE.Nombre;

            //falta cargar precio, que se hará recien cuando se seleccione la condición del paciente.
        }
        private void timer2_Tick(object sender, EventArgs e)
        {
            txtFechaHoraActual.Text = DateTime.Now.ToString();
        }

    }
}
